package com.leyou.job;

import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;

@Slf4j
@Component
public class MyJobTest {

    private Integer i = 0;

    /**
     * cron表达式方式的也是侧重于时间间隔，类似于delay
     * 每隔一个小时执行一次【0 0 1/1 * * ？】
     * @throws InterruptedException
     */
    //@Scheduled(cron = "1/2 * * * * ?")
    public void helloCron() throws InterruptedException {
        if(i==1){
            Thread.sleep(6000);
        }
        log.info("cron定时任务执行了！");
        i++;
    }

    /**
     * 固定延迟执行
     * 如果我们对于定时任务的执行实际，侧重于时间间隔，而不是时间点用这个。
     * @throws InterruptedException
     */
    //@Scheduled(fixedDelay=2000)
    public void helloDelay() throws InterruptedException {
        if(i==1){
            Thread.sleep(6000);
        }
        log.info("delay定时任务执行了！");
        i++;
    }

    /**
     * 固定频率执行
     * 固定频率不能保证执行的时间间隔，但是可以按时执行。
     * @throws InterruptedException
     */
    //@Scheduled(fixedRate=2000)
    public void helloRate() throws InterruptedException {
        if(i==1){
            Thread.sleep(6000);
        }
        log.info("rate定时任务执行了！");
        i++;
    }

}
